Multicast is the delivery of a message or information to a group of destination computers simultaneously in a single transmission from the source. Copies of the message are automatically replicated and forwarded by other network elements. Forwarding and replicating multicast packets are usually done by intermediate nodes in the network—switches fulfill multicast forwarding inside a layer 2 network while (multicast) routers fulfill multicast routing across layer 3 networks. Typically, switches that support multicast use either Internet Group Management Protocol (IGMP) snooping or Multicast Listener Discover (MLD) snooping. Switches may use IGMP snooping for Internet Protocol version 4 (IPv4), and switches may use MLD snooping for IPv6. Routers that support multicast use Protocol Independent Multicast (PIM) as the routing protocol. Although certain aspects are described with respect to certain protocols, it should be noted that other appropriate protocols may also be used herein.
Although previously not very many applications used multicast, many Internet protocol (IP) multicast applications have been developed and deployed, like financial software, video service, etc. A use case worth noting is overlay based network virtualization (layer 2 tunneling), with virtual extensible local area network (VXLAN) being an important technology. VXLAN can support a large number of logical layer 2 networks over a physical IP network. It is based on MAC-over-UDP encapsulation, and requires an IP multicast group to be allocated for encapsulation of BUM (broadcast, unknown unicast, and multicast) traffic inside a logical network. As a result, a large number of multicast groups may be consumed, especially in a cloud environment in which each tenant may create a number of logical networks. These created logical networks and corresponding multicast groups may span across physical layer 3 networks and even datacenters. Other tunneling protocols, besides VXLAN, may also be used, such as Stateless Transport Tunneling (STT), Generic Network Virtualization Encapsulation (GENEVE), or Generic Routing Encapsulation (GRE).
In virtualized computing systems, host machines generally host a plurality of virtual machines. In hosting virtual machines, a host machine may provide a virtual switch that connects virtual machines running on the host to communicate with other virtual machines hosted on the same host machine as well as virtual machines hosted on other hosts. For example, the virtual machines may be interconnected as part of a logical overlay network. Logical overlay networks may be implemented by the host by encapsulating egress packets from the virtual machines and decapsulating ingress packets. For example, VXLAN tunnel endpoint (VTEP) services for encapsulating packets may be implemented at each host or at a gateway. Edge VTEPs or hypervisor-based VTEPs are generally connected to virtual switches implemented by the hypervisor for virtual machines on the same physical host. While the term “VTEP” refers to “VXLAN” tunneling protocol, it is now often used regardless of the tunneling protocol. The host may refer to internally-maintained forwarding tables that are populated by a control plane for determining whether to encapsulate packets and the targets of the encapsulation header based on the destination address of the original packet's header.
Receiver endpoints of physical (“underlay”) networks may be physical endpoints, such as host computers. Receiver endpoints of logical (“overlay”) multicast groups may be virtual machines (VMs) or processes running on VMs. One or more overlay multicast groups are mapped to an underlay multicast group, similarly to the way virtual addresses are mapped to physical addresses in the functioning of virtual memory within conventional operating systems.
Inefficiencies may arise in the placement of VMs that are part of a multicast group. The VMs of a multicast group may be distributed among subnets and hosts of a network in a suboptimal manner. For example, multiple subnets may receive multicast messages for only a few VMs within each subnet, increasing congestion within the network. In another example, hosts that are not part of a multicast group may receive a multicast message for that group, only to ignore the message. This wastes host resources and also increases network congestion. VM placement may be rearranged throughout the network to lower network traffic and to make multicast message delivery more targeted to the intended receivers.